﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using com.creditos.be.liclSolcred;
using System.Collections.Generic;
using liclSolcred.Views;

public partial class solcred_FormsManActualizarParametrosBasicos : CreditosPaseBase,IFormsParametrosBasicosView
{

    private FormsParametrosBasicosPresenter oPresenter = new FormsParametrosBasicosPresenter();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
            if(ListaParametrosBasicos.Count>0)
            ListaParametrosBasicos.Clear();
            oPresenter.View = this;
            Master.TituloModulo = "Registro de Parámetros Básicos";                        
            txtFechaIngreso.Text = DateTime.Now.ToShortDateString();
            UCBarraHerramientas1.btnGuardar.Visible = true;                        
            UCBarraHerramientas1.btnCancelar.Visible = true;
            txtCodigoPlantilla.Text = "0";            
            txtDescripcionPlantilla.Attributes.Add("onkeypress", " ValidarCaracteres(this, 80);");
            txtDescripcionPlantilla.Attributes.Add("onkeyup", " ValidarCaracteres(this, 80);");
            if (Request.QueryString["Accion"] == "2")
            {
                ParametrosBasicosBE oParametro = new ParametrosBasicosBE();
                oParametro.CodPlantilla = int.Parse((string)Session["CodigoPlantilla"]);
                oPresenter.ObtenerParametroBasico(oParametro);
                oParametro.Accion = 1;
                oPresenter.ObtenerParametroBasicoVariable(oParametro);
                UCBarraHerramientas1.btnGuardar.Visible = false;
                btnAgregarVariable.Visible = false;
            }        
        }
        oPresenter.View = this;
        if (Request.QueryString["Accion"] == "2" || strAccion =="2")
        {
            ParametrosBasicosBE oParametro = new ParametrosBasicosBE();
            oParametro.CodPlantilla = int.Parse((string)Session["CodigoPlantilla"]);
            strDescripcionPlantilla = txtDescripcionPlantilla.Text;
            oPresenter.ObtenerParametroBasico(oParametro);            
            oParametro.Accion = 1;
            oPresenter.ObtenerParametroBasicoVariable(oParametro);
            
        }
        else if (strAccion == "1")
        {
            if (ListaParametrosBasicos.Count > 0)
                UIBindable.Bind(gvwDetalleParametros, ListaParametrosBasicos);
        }
    }


    protected override void DefineHandlers()
    {        
        btnAgregarVariable.Click += new EventHandler(btnAgregarVariable_Click);
        UCBarraHerramientas1.btnGuardar.Click += new EventHandler(btnGuardar_Click);
        UCBarraHerramientas1.btnCancelar.Click += new EventHandler(btnCancelar_Click);
        gvwParametrosVariable.SelectedIndexChanged += new EventHandler(gvwParametrosVariable_SelectedIndexChanged);
    }

    void btnAgregarVariable_Click(object sender, EventArgs e)
    {
        strAccion = "1";
        ScriptManager.RegisterStartupScript(this, typeof(Page), "Evaluacion", "abrirPopupRegistroParametroBasico();", true);
        if (ListaParametrosBasicos.Count > 0)
        UIBindable.Bind(gvwDetalleParametros, ListaParametrosBasicos);
    }
    void btnGuardar_Click(object sender, EventArgs e)
    {
        ParametrosBasicosBE oParametrosBasicos = new ParametrosBasicosBE();
        oParametrosBasicos.Accion = 1;
        oParametrosBasicos.CodPlantilla = int.Parse(txtCodigoPlantilla.Text);
        oParametrosBasicos.DescripcionPlantilla = txtDescripcionPlantilla.Text;        
        MostrarMensajeError("");
        if (txtDescripcionPlantilla.Text == string.Empty) { MostrarMensajeError("Falta llenar la descripcion de la plantilla"); }
        else
        {            
            List<ParametrosBasicosBE> lstParametros = new List<ParametrosBasicosBE>();
            lstParametros = oPresenter.ActualizarParametroBasico(oParametrosBasicos);
            txtCodigoPlantilla.Text = lstParametros[0].CodPlantilla.ToString();
            txtEstado.Text = lstParametros[0].DescripcionEstado;

            if (ListaParametrosBasicos.Count > 0)
            {
                for (int i = 0; i < ListaParametrosBasicos.Count; i++)
                {
                    ListaParametrosBasicos[i].CodPlantilla = lstParametros[0].CodPlantilla;
                    ListaParametrosBasicos[i].Accion = 1;
                }
                oPresenter.ActualizarParametroBasicoVariable(ListaParametrosBasicos);
                MostrarMensajeError("Registro ingreado exitósamente");
                UCBarraHerramientas1.btnGuardar.Enabled = false;
                btnAgregarVariable.Enabled = false;
                oParametrosBasicos.CodPlantilla = txtCodigoPlantilla.Text == string.Empty ? 0 : int.Parse(txtCodigoPlantilla.Text);
                Session["CodigoPlantilla"] = oParametrosBasicos.CodPlantilla.ToString();
                oPresenter.ObtenerParametroBasicoVariable(oParametrosBasicos);
                UCBarraHerramientas1.btnGuardar.Visible = false;
                btnAgregarVariable.Visible = false;
                gvwDetalleParametros.Visible = false;
            }
            else {
                MostrarMensajeError("Debe agregar al menos una variable para poder grabar");            
            }
            
            
        }

    }

    void btnCancelar_Click(object sender, EventArgs e)
    {
        UCBarraHerramientas1.btnGuardar.Enabled = true;
        ListaParametrosBasicos.Clear();
        txtDescripcionPlantilla.Text = string.Empty;        
        strAccion = string.Empty;
        Response.Redirect("FormsConParametroBasico.aspx");
        
    }

    protected void gvwParametrosVariable_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (gvwParametrosVariable.Rows.Count > 0)
        {
            GridViewRow row = gvwParametrosVariable.SelectedRow;

            strAccion = "2";            
            strCodigoIntegrante = row.Cells[1].Text;
            strCodigoVariable = row.Cells[3].Text;
            //strDescripcionPlantilla = txtDescripcionPlantilla.Text;

            ScriptManager.RegisterStartupScript(this, typeof(Page), "Evaluacion", "abrirPopupRegistroParametroBasico();", true);
        }
    }


    public List<ParametrosBasicosBE> ListaParametrosBasicos
    {
        get
        {
            if (Session["ListaParametrosBasicos"] == null)
            {
                Session["ListaParametrosBasicos"] = new List<ParametrosBasicosBE>();
            }
            return (List<ParametrosBasicosBE>)Session["ListaParametrosBasicos"];
        }
        set { Session["ListaParametrosBasicos"] = value; }

    }


    #region IFormsParametrosBasicosView Members

    public void CargarParametros(List<com.creditos.be.liclUtil.ParametroBE> lstParametros)
    {
        throw new NotImplementedException();
    }

    public void MostrarMensajeError(string strMensaje)
    {
        Master.MostrarMensaje(strMensaje, 0);
    }

    public void CargarVariables(List<ParametrosBasicosBE> lstParametrosBasicos)
    {
        throw new NotImplementedException();
    }

    public void CargarResumentParametrosBasicos(List<ParametrosBasicosBE> lstResumen)
    {
        throw new NotImplementedException();
    }

    public void ObtenerParametroBasico(List<ParametrosBasicosBE> lst)
    {
        if (lst.Count > 0) {
            txtCodigoPlantilla.Text = lst[0].CodPlantilla.ToString();
            txtDescripcionPlantilla.Text = lst[0].DescripcionPlantilla;
            txtEstado.Text = lst[0].DescripcionEstado;
            txtFechaIngreso.Text = lst[0].FechaIngreso.ToShortDateString();            
        }
    }

    public void ObtenerParametroBasicoVariable(List<ParametrosBasicosBE> lst)
    {
        if (lst.Count > 0)
        {
            UIBindable.Bind(gvwParametrosVariable, lst);
        }
    }

    #endregion

    #region Propiedades  
    public string strCodigoIntegrante
    {
        set { Session["CodigoIntegrante"] = value; }
    }
    public string strCodigoVariable
    {
        set { Session["CodigoVariable"] = value; }
    }
    public string strAccion
    {
        get
        {
            return (string)Session["Accion"];
        }
        set { Session["Accion"] = value; }
    }
    public string strDescripcionPlantilla
    {
        set { Session["DescripcionPlantilla"] = value; }
    }
    #endregion
}
